﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Generic.Contract;
using Generic.Data.Manager;
using Contract.Business.Entity;
using Contract.Business.Filter;
using FastOdonto.Data.Entity;
using System.Data;

namespace Contract.Data.Manager
{
    public class DMClinica : DMGeneric<BEClinica, FEClinica>
    {
        //DBFastOdontoEntities2 dc;

        //#region Override

        //public override BEClinica Salvar(BEClinica entidade)
        //{
        //    try
        //    {
        //        if (entidade.Codigo.Equals(0))
        //            Incluir(entidade);
        //        else
        //            Alterar(entidade);

        //        return entidade;
        //    }
        //    catch (Exception)
        //    {
        //        throw;
        //    }
        //}

        //public override void Excluir(BEClinica entidade)
        //{
        //    try
        //    {
        //        TBClinica entidadeBanco = new TBClinica();
        //        entidadeBanco.ConvertFromBE(entidade);

        //        using (dc = new DBFastOdontoEntities2())
        //        {
        //            dc.TBClinicas.Attach(entidadeBanco);
        //            dc.DeleteObject(entidadeBanco);

        //            dc.SaveChanges();
        //        }
        //    }
        //    catch (Exception)
        //    {
        //        throw;
        //    }
        //}

        //public override BEClinica ObterEntidade(int codigo)
        //{
        //    try
        //    {
        //        TBClinica obj = null;
        //        using (dc = new DBFastOdontoEntities2())
        //        {
        //            obj = dc.TBClinicas.Single(q => q.ID.Equals(codigo));
        //            return obj.ConvertToBE(1);
        //        }
        //    }
        //    catch (Exception)
        //    {
        //        throw;
        //    }
        //}

        //public override List<BEClinica> ObterTodos(FEClinica filter)
        //{
        //    try
        //    {
        //        List<TBClinica> TBClinica = null;
        //        using (dc = new DBFastOdontoEntities2())
        //        {

        //            var q = from e in dc.TBClinicas
        //                    where
        //                    (
        //                        (String.IsNullOrEmpty(filter.Descricao) || e.DEClinica.Contains(filter.Descricao)) &&
        //                        (!filter.Codigo.HasValue || e.ID.Equals(filter.Codigo))
        //                    )
        //                    select e;

        //            TBClinica = q.ToList();

        //            List<BEClinica> retorno = new List<BEClinica>();

        //            foreach (TBClinica de in TBClinica)
        //                retorno.Add(de.ConvertToBE(1));

        //            return retorno;
        //        }
        //    }
        //    catch (Exception)
        //    {
        //        throw;
        //    }
        //}

        //#endregion

        //#region Métodos Auxiliares

        //private void Incluir(BEClinica entidade)
        //{
        //    try
        //    {
        //        using (dc = new DBFastOdontoEntities2())
        //        {
        //            TBClinica de = new TBClinica();
        //            de.ConvertFromBE(entidade);

        //            dc.TBClinicas.AddObject(de);
        //            dc.SaveChanges();

        //            entidade.Codigo = de.ID;
        //        }
        //    }
        //    catch (Exception)
        //    {
        //        throw;
        //    }
        //}

        //private void Alterar(BEClinica entidade)
        //{
        //    try
        //    {
        //        TBClinica entidadeBanco = new TBClinica();
        //        entidadeBanco.ConvertFromBE(entidade);

        //        using (dc = new DBFastOdontoEntities2())
        //        {
        //            dc.TBClinicas.Attach(entidadeBanco);
        //            dc.ObjectStateManager.ChangeObjectState(entidadeBanco, EntityState.Modified);

        //            dc.SaveChanges();
        //        }
        //    }
        //    catch (Exception)
        //    {
        //        throw;
        //    }
        //}

        //#endregion
    }
}
